home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Magnum One
/
Magnum One (Mid-American Digital) (Disc Manufacturing).iso
/
d8
/
mskrt310.arc
/
MSR310.DOC
< prev
Wrap
Text File
|
1991-03-20
|
45KB
|
869 lines
File MSR310.DOC A list of items new to MS-DOS Kermit v3.10 2 March 1991
FILE TRANSFER CHANGES
1. New command REMOTE PRINT <filespec> <optional-printer-parameters>. This
is taken from the Kermit book and means send the local file to the remote
Kermit's printer with optional printer parameters (spaces permitted).
The remote Kermit can be in server mode or receive mode. The command is
now supported on MS-DOS Kermit servers by receiving the file(s) to DOS
filename PRN; optional parameters are ignored. The ENABLE and DISABLE
commands now have PRINT as a new option.
2. Follow the lead of C-Kermit 5A and attempt simple correction of Parity on
the communications line during packet transfers. Parity will be shifted
to EVEN, ODD, or MARK by the detector, in addition to the older warning
about removing the high bit on characters. The first four packet
characters determine the parity. Any change becomes permanent. SPACE
parity cannot be distinguished from NONE, and so 8-bit data when
transferred over a 7-bit SPACE parity connection will result in fatal
checksum errors.
3. Add two new commands:
SET SEND DOUBLE-CHAR <number between 0 and 255>
which sends this character twice in a row in outgoing packets. The
doubling occurs as packet bytes are being sent to the communications
channel and hence does not occur during packet construction. This
accommodates communications devices which need doubling to let through a
single copy. The doubling does not appear in the packet log. Padding
characters are not affected by this command since padding is to be
discarded at the other end anyway.
SET RECEIVE IGNORE-CHAR <number between 0 and 255>
which ignores this character in received packets. This accommodates
communications devices which may insert a character into a stream, such
as a Line Feed inserted before a Carriage Return, or after every "n"
characters. The ignored character will not appear in the packet log.
Note that NUL (0) and DEL (127) are normally ignored even without this
command.
4. Add alternative command syntax: SET FILE COLLISION means the same as
older SET FILE WARNING and SET FILE COLLISION DISCARD is the same as SET
FILE COLLISION NO-SUPERSEDE.
5. Add command REMOTE SET FILE COLLISION UPDATE, meaning the file receiver
on the other side should process incoming files with conflicting names as
"updates" (whose meaning is system dependent) to existing files with the
same names. The MS-DOS Kermit server does not recognize the command.
6. Accommodate the Cyrillic character set of Code Page 866 ("Alternative
Cyrillic") as much as possible. The command SET TRANSFER CHARACTER-SET
has the new option CYRILLIC (ISO 8859-5, the Latin/Cyrillic Alphabet), and
if selected will force the FILE CHARACTER-SET to be CP866. Similarly, if
the FILE CHARACTER-SET is selected to be the new option CP866 then it will
force the TRANSFER CHARACTER-SET to be CYRILLIC. Warnings are issued for
both cases.
When sending a text file with TRANSFER CHARACTER-SET CYRILLIC the file
attributes packet will send "I6/144" for the file character-set
identification (the "C" attribute) and translation will be done between
ISO 8859-5 on the wire and CP866 (Alternative Cyrillic) in the machine.
The reason for the coupling of commands is that CP866 has many Cryillic
characters in the right (high bit set) section which have no equivalents
in other Kermit character sets and regular Code Pages. Hence, when CP866
or CYRILLIC is selected there can be no translation of characters between
CP866 and either the other (Western European) Code Pages or the LATIN1
character set.
If a file arrives with an attributes packet indicating a Cyrillic transfer
character set but the local machine is not adjusted for CP866 then CP866
is forced for this file. The active Code Page indictor reverts to the
real Code Page value after the file transfer has completed successfully
or not.
For terminal emulation SET TERMINAL CHARACTER-SET TRANSPARENT will prevent
unwanted translations and also convert the C1 controls area into printable
characters found in CP866. If the host uses Alternative Cyrillic as a
terminal character set and the PC has CP866 as its active code page, all
will work correctly. If the host uses some other Cyrillic character set,
MS-DOS Kermit can translate it into CP866 if it is given the appropriate
set of SET TRANSLATE INPUT commands.
7. Modify the action of the BYE and LOGOUT commands from an MS-DOS Kermit
client. Previously these would complete successfully whether or not the
server host sent an Error packet. A Kermit server can send an Error
packet response if BYE has been Disabled or if it doesn't understand the
BYE command. To keep things rational MS-DOS Kermit now stays active if
an Error packet is received for these commands. Script writers may want
to issue an extra command to EXIT Kermit regardless. An MS-DOS Kermit
server returns an ACK with a message that the command is disabled, it
logs out the user, it hangs up the connection. If BYE is disabled the
server waits for another customer, if it is enabled the serving Kermit
exits to DOS.
8. On the formatted file transfer screen add " of n" to the Window slots
line, where n is the maximum number negotiated between Kermits.
9. Add more flexibility to the REMOTE LOGIN <username password account>
command so it can be stated on one line, particularly for Take files, and
yet retain the ability to use embedded spaces in all three fields. To
use embedded spaces, surround the quantity with curly braces, {..}. An
example is a username of "my name" and a password of "no show":
REM LOGIN {my name} {my spaced password}
The account name is omitted in this example. Kermit will prompt for the
items only if nothing is specified after the word LOGIN.
10. During file transfers pressing either Control-Q or just Q sends an XON
code to the other side, regardless of our flow control setting. This
is to manually free a host blocked by a stray XOFF. File msscom.asm
SCRIPT, MACRO, TAKE FILE CHANGES
1. In the command WAIT <timeout> \CD \CTS \DSR, let the backslash character
be optional, to merge syntax with C-Kermit 5A.
2. Slightly revise script INPUT and REINPUT command sensing of timeouts by
examining elapsed time after, rather than before, reading each serial port
character. This might cure complaints of REINPUT 0 reporting premature
FAIL status.
3. Significant change to \%n variables defined as macro arguments. For each
macro invocation first save variables \%0 through \%9, clear \%0..\%9,
then define \%0 to be the name of the macro being invoked and \%1..\%9 as
the arguments to the macro. When the macro exits restore the previous
\%0..\%9 variables.
This process nests naturally, and ARGC still represents one plus the
number of macro arguments. C-Kermit 5A and MS-DOS Kermit 3.10 are now in
agreement on these items. Previously \%0 was not affected by macro
invocation and \%1..\%9 were not saved and restored around the macro.
The new behavior may affect scripts written in the past.
TAKE commands do not create a new set of \%<digit> variables.
For example,
MS-Kermit> DEFINE xxx Set term VT302,take x.tak,connect
MS-Kermit> xxx A B C
where file x.tak holds
echo \%0 \%1 \%2 \%3
This displays "XXX A B C" and then enters Connect mode as a VT320
terminal.
Some basic concepts:
- Intrinsic (built-in) commands do not affect the \%0..\%9 variables,
but user-created commands (macros) do create a private version of
\%0..\%9. TAKE is an intrinsic command.
- To be a command, the keyword -- intrinsic or macro -- must be the first
word at the Kermit prompt. Commas in macros start a fresh command line
even though the Kermit prompt is usually not displayed on the screen
while within a macro.
Thus in the definition below of macro "test":
DEFINE test echo \%0 \%1,mywords,echo test mywords \%1
there are three commands (they start at the effective Kermit prompt):
echo TEST <first argument><carriage return>
mywords<carriage return> (whatever the macro "mywords" is defined as)
echo test mywords <first argument to test><carriage return>
The argument to this last ECHO command is the simple text "test mywords"
plus the first argument to "test". In the text neither test nor mywords
is replaced by its definition, and ECHO is an intrinsic command.
- String substitution variables, \%<character> and \v(variable), are
always immediately replaced by their definition string no matter where
they are used outside of a DEFINE command.
- ASSIGN is similar to DEFINE except that whereas DEFINE uses the
definition text as a literal string ASSIGN first evaluates the text,
i.e. it replaces \%<character> and \v(variable) items with their string,
at the time the ASSIGN statement is executed.
- Curly braces, {..}, may be used to group items into a single quantity.
When they appear as part of a macro then as the macro is executed (DO)
the top level braces are first removed and any commas outside of braces
are changed to carriage return command terminators. Many commands, such
as ECHO, remove the top level braces before displaying a string.
Commands requiring a word answer can employ braces to retain spaces as
part of the word.
4. Add a new element to command line variables, taken from C-Kermit 5A.
Variables ARGC, COUNT, DATE, NDATE, DIRECTORY, ERRORLEVEL, KEYBOARD,
PLATFORM, PROGRAM, SPEED, SYSTEM, STATUS, TIME, and VERSION can now be
used in any context by employing a new notation for built-in variables:
\v(variable)
where "variable" is one of the words listed above. A built-in variable,
no matter where it occurs, is replaced by a text string representing its
value.
PLATFORM returns the machine name, such as IBM-PC, and SYSTEM returns
the operating system name, MS-DOS, for MS-DOS Kermit. PROGRAM returns
MS-DOS_KERMIT.
Examples:
WRITE session \v(platform) has a \v(keyboard) key keyboard.
writes to the session log the phrase "IBM-PC has a 101 key keyboard."
ECHO The version number of this program is \v(version) today.
displays:
The version number of this program is 302 today.
And DEFINE See ECHO \%0 - the arg is \v(\%1) here.
See argc
which displays
SEE - the arg is 2 here.
See version
which displays
SEE - the arg is 302 here.
The expression \v(variable) is replaced by its ascii value. This may be
used in any command. The current syntax of IF = ARGC 2 ... is retained
for compatibility purposes but in new scripts it should be replaced by
IF = \v(argc) 2, etc.
If the item within the parentheses is not one of the above variables, or
a variable whose value evaluates to the name of a built-in variable, or
a right parenthesis does not end the variable name, then the entire
expression from \v( to the current point is discarded. Abbreviation of
a \v(..) variable name is permitted. Examples of bad syntax:
ECHO testing \v(versions) stuff
or
ECHO testing \v(version stuff
both of which display
testing stuff
Variable NDATE reports the date with all digits as YYYYMMDD for easier
testing in scripts than DATE which reports in country dependent forms of
MM-DD-YYYY, DD-MM-YYYY, or YYYY:MM:DD. Variable STATUS reports the value
of the Kermit internal status word; 0 is success, any other numeric is a
failure. Most Kermit commands clear this word result before execution.
The current values are listed below; "user intervention" may be added to
other values.
Condition Status Comment
success 0 initial value for most commands
send failure 1 includes OUTPUT and TRANSMIT commands
receive failure 2 includes INPUT command timeout
remote cmd failure 4 REMOTE command failed for any reason
Take file failure 8 Take file not found
general failure 16 many causes
user intervention 128 usually by typing Control-C
Variable KEYBOARD is 88, 101, or 250, describing the number of keys on
the keyboard so that Take files can be tailored to fit either 88
(so-called Old AT) or 101 (so-called Enhanced) keyboards. The
determination of 88 or 101 is made at Kermit startup. The IBM PC version
also permits the value 250 if the LK250 keyboard is selected (SET KEY
LK250) and external driver is present for the Digital keyboard.
"?" help and <ESC> word completion is permitted with these items.
5. Add command SHOW VARIABLES [\v(]name[)] which displays the strings
associated with variables of the form \v(variable-name). Leading "\v("
and trailing ")" may be omitted. SHOW VARIABLE with no argument shows
all variables; abbreviations are allowed and show all matches.
6. Add a feature suggested by John Klensin and Frank da Cruz, from C Kermit.
New substitution variable notation \$(item) means replace \$(item) by
the string on the right hand side of the line starting as ITEM= in the
DOS Environment. Any word may be used for ITEM. The replacement will be
empty if either the string or the item is absent in the Environment.
Leading and trailing spaces and tabs are removed from the string.
Examples:
Echo \$(path)
shows the string which occurs after "PATH=" in the Environment, such
as C:\;C:\WP;C:\DOS.
IF eq \$(video) CGA echo Upgrade to VGA
will show the string "Upgrade to VGA" if someone has provided the line
VIDEO=CGA in the Environment, perhaps by typing SET VIDEO=CGA or
written there by a program.
ASSIGN \%p \$(path)
gives variable \%p the definition of the right hand side of PATH=.
Semicolons occurring in \$(..) replacement strings will be treated as
ordinary characters and will not start a comment. Comments starting
with a semicolon are now restricted to ordinary Macros and Take files.
7. Add two tests to the script IF statement. These are lexical comparisons
between two words. The curly brace {..} operators are not usable here.
IF LLT word1 word2 <command>
executes <command> if word1 has fewer characters (after
removing leading spaces) than word2, or if at the first
character where the words differ word1 has a character
occurring earlier (less than) in the ascii collating sequence
than that in word 2.
IF LGT word1 word2 <command>
opposite of above, for word1 longer than word2 or the first
differing character in word1 occurs later (greater than) that
in word2 in the ascii collating sequence.
Combining these with IF EQUAL and the NOT modifier yields all logical
comparison conditions, as shown in the table below. Case sensitivity
of the tests is controlled by SET INPUT CASE {IGNORE, OBSERVE}, with
IGNORE being the default; when case is observed uppercase letters are
"less than" lower case letters.
Lexical Test Kermit IF statement
word1 = word2 IF EQUAL word1 word2 ...
word1 != word2 IF NOT EQUAL word1 word2 ...
word1 < word2 IF LLT word1 word2 ...
word1 > word2 IF LGT word1 word2 ...
word1 => word2 IF NOT LLT word1 word2 ...
word1 <= word2 IF NOT LGT word1 word2 ...
8. Modify the action of pressing the Enter key while a script INPUT command
is in progress. Previously it meant "assume a match has occurred" so the
script could progress. Now it means "assume a timeout has occurred" and
report a failure status. People seem to prefer the latter approach.
9. Add screen-clear command CLS to clear the screen at Kermit command
level, especially for Take files and macros (Control-L does it by hand).
10. Add synomym
SET FILE DISPLAY {QUIET, REGULAR, SERIAL}
meaning the same as SET DISPLAY {QUIET, REGULAR, SERIAL}.
TEXT TERMINAL EMULATION CHANGES
1. Add command SET TERMINAL WIDTH {80, 132} to attempt to manually set the
screen width in text terminal emulation mode. Previously this could be
done only by host commands CSI ? 3 h/l, etc, or outside of Kermit before
startup. The main STATUS display was revised slightly to accomodate
showing the current screen width setting. Screen width changes occur
when the text terminal emulator resumes operation and utilize the same
methods as if the host had issued the command: direct control of the
display boards known to Kermit (listed below) or invoking files
COLS80.BAT or COLS132.BAT if Kermit does not support the the display
board directly. The COLSxxx.BAT files should contain whatever DOS
commands you normally use (e.g. MODE) to put your screen in 80 and 132
column mode, respectively.
2. Add recognition of IBM PC video boards STB VGA/EM Plus (Tseng 4000) and
Everex Viewpoint EV-678 from Terry Kennedy, IBM XGA from Bert Tyler,
Paradise Autoswitch from David Zielke of Duke University, and ATI VGA
Wonder from Steve Wood. The list of boards known to Kermit for switching
between 80 and 132 columns is now:
ATI EGA Wonder and VGA Wonder
AT&T
Everex Viewpoint EV-659, FVGA-673, EV-678, Micro Enhancer Deluxe
IBM XGA
Paradise AutoSwitch EGA Mono
STB VGA/EM (Tseng TVGA)
STB VGA/EM Plus (Tseng 4000), VGA/EM-16, VGA/EM-16 Plus
Tseng Labs EVA board w/132-col kit installed
Tseng Labs UltraPAK mono/Hercules with 132 column modes
Video 7 VGA and Vega Deluxe with the 132X25.COM driver installed
3. Add the following VT340 control sequence, DECSCPP, to change screen width:
CSI Pn $ | set columns per page (screen width)
Pn width
0 or 80 80 columns
132 132 columns
In Kermit Pn values greater than 80 yield 132 columns, else 80 columns.
This is equivalent to CSI ? 3 h/l (h for 132 columns, l for 80 columns).
4. New option to the SET TERMINAL command:
SET TERMINAL ARROW-KEYS {CURSOR, APPLICATION}
It is worth remembering that Applications mode is supposed to be invoked
by the host and not by the terminal user. So, please do not make a host
program dependent on Applications mode responses from the terminal unless
it also invokes that mode; otherwise real terminals will not function.
5. SET TERMINAL BELL {AUDIBLE, VISUAL, NONE} has the new option of NONE
to simply ignore arriving Control-G characters. Peace & Quiet.
6. Revise REPLAY filespec a little. Previously at the end of the file any
key would exit Connect mode. Now all keys remain active so that screen
dumping, screen rollback can function. Alt-X and Control-C (emergency
bailout) exit Connect mode.
7. Extend the SET TERMINAL CHARACTER-SET command. After the character set
one may optionally add phrases G0 G1 G2 G3. The meaning of these trailing
character set storage areas is to attempt forcing the named set into the
areas without reinitializing the overall character setup in place.
Omitting these trailers invokes the normal character setup method. G0
may hold only 94 byte character sets.
Examples:
set term char latin1 puts Latin1 into G2 and G3
and ASCII into G0 and G1
set term char latin1 G1 puts Latin1 into G1, rest unchanged
set term char Italian G3 puts Italian NRC into G3, rest unchanged
8. Embellish the VT300 character set abilities by permitting National
Replacement Character (NRC) sets to be "designated" by the host to a
particular Gn set table, viz:
Designator Mnemonic Description of Action
ESC ( <ident> SCS Designates 94 byte character set <ident> to G0
ESC ) <ident> SCS Designates 94 byte character set <ident> to G1
ESC * <ident> SCS Designates 94 byte character set <ident> to G2
ESC + <ident> SCS Designates 94 byte character set <ident> to G3
where <ident> is:
NRC country <ident> NRC country <ident>
British A Italian Y
Dutch 4 Norwegian/Danish ` (hex 60) or E or 6
Finnish 5 or C Portuguese %6
French R Spanish Z
French Canadian 9 or Q Swedish 7 or H
German K Swiss =
Example: ESC ) A loads the British NRC set (A) into G1 (the ")" part).
To load Latin1 into G1 use ESC - A because Latin1 is a 96-character set.
NRCs are all 94 character sets (see ISO Standard 2022 for further
elucidation).
This embellishment does NOT turn on NRC operation in the Digital
Equipment Corporation sense. To follow DEC usage employ SET TERM
CHARACTER-SET to choose the country and have the host enable or disable
NRCs by sending CSI ? 42 h or CSI ? 42 l, respectively.
9. Enhanced the command SET KEY {key-ident, OFF, ON, LK} to include the new
option LK. If stated LK means seek the matching DEC LK250 keyboard
driver (external to Kermit) and use Bios key inputs; otherwise do not
seek that driver. It seems that a few PCs object to the legal driver
sensing operation, so now the driver is ignored unless explicitly
requested.
10. Add terminal type of VT100. This performs identically to a VT102 except
the response to the type inquiry from a host is ESC [ ? 1 c (a VT100).
11. Add terminal type of HONEYWELL to the emulator. This is a VT100 with
two special responses. A received ENQ character, decimal 5, causes the
emulator to send the 14 characters
'7813 P GC A' 03h
and receipt of ESC [ y causes the emulator to send the 27 characters
ESC '[8p OT' 03h ESC '[y7813 P GC A ' 03h
where the quote marks (') above are not sent but are present so we can
see the spaces which are sent; other spaces are for reading convenience.
03h is Control-C, a binary value 3. The terminal ident response is VT100.
ESC ` (accent grave) clears screen and homes the cursor.
These Honeywell VIP7809 emulation features are from Frank Dreano,
dreano@trout.nosc.mil.
12. Add another host invocation control sequence to the text terminal
emulator. Reception of CSI Pn;...Pn ~ invokes a macro named PRODUCT, if
it exists, and sets variables \%1, \%2, and so forth up to \%9 to be the
ascii version of the numeric parameters Pn above. Omitted parameters are
taken to be zeros. Only as many variables are set as numeric parameters,
and script items ARGC and \v(argc) are one larger than this quantity. If
a macro called PRODUCT is not defined only the \%x items are changed.
Connect mode is not reentered automatically if the macro exists. This is
very similar to TERMINALR and TERMINALS, except for the variable setting
part.
The PRODUCT macro is not invocable via key definition because of the
needed parameters. The idea behind PRODUCT is to permit a general macro
which can test the parameters sent by the host and take local actions as
necessary.
The PRODUCT macro is intended as a systematic and standardized method for
software developers to signal vendor-specific requests to a terminal
emulator. For example, the first two arguments could be a vendor code,
the next two product-specific identification, and others could be
information particular to that product. The leading identification part
is to let the terminal emulator select one of several different routines
(Kermit Take files or Macros). Assignment of fields has not been fixed.
13. Modify the strategy for DEC Autoprint, CSI ? 5 (and 4) i from printing
each character as it arrives to printing display lines only as the cursor
is moved off it by an autowrap or LF, FF, or VT (otherwise do not print
the line). Thanks to Michael Wolter for pointing out the problem.
14. Preserve the state of VTxxx terminal emulator printing around processing
of DEC Set Conformance Level commands, e.g. CSI 63; 1 " p. Tnx to Michael
Wolter and John E. Davis.
15. Make a small change to the Self Test code, DECTST, CSI 2 ; Ps y (VT100)
and CSI 4 ; Ps...; Ps y (VT320). Do a terminal reset only if a Ps is 0 or
1. This is in the VT terminal emulator. Ps values greater than 1 are for
testing the terminal serial port, printer, and repeating the tests; they
are ignored here. All cases move the cursor back to the main display.
15. Add synomyms
SET TERMINAL DISPLAY {7-bit | 8-bit}
SET TERMINAL BYTESIZE {7-bit | 8-bit}
meaning the same as SET DISPLAY {7-bit | 8-bit}.
16. Add command SET PRINTER filespec to allow changing the destination of
printer output while in Connect mode. Filespec defaults to PRN, DOS's
name for the first printer. This facility can help capture text from
the screen after character set translation and free of cursor steering
commands and the like if SET PRINTER filename is stated and then in
Connect mode one toggles on local printing (keyboard verb \Kprtscn, tied
to Control-PrtScn keys). XON/XOFF flow control, if available, is used
around this "printer" output.
GRAPHICS TERMINAL EMULATION CHANGES
1. Make the GIN mode crosshairs be full screen, by popular demand. Revise
BYPASS mode details to discard all terminal input from the host while
Bypass mode is active, and to turn off Bypass when Kermit sends a control
code. Bypass mode is turned on when the host sends ESC ^X (enter Bypass
mode) or ESC ^E (send status) or ESC ^Z (enter GIN crosshair mode).
2. Modify the way characters are placed on Tektronix graphics screens from
starting them at intervals of 8 PC screen dots across the screen to
placing the lower left at the current drawing position (1 dot
resolution). Characters are 8x8 dots. The effect is better positioning
accuracy along the x-axis; the y-axis already behaved the better way.
3. Adjust Tektronix emulator slightly so that SET TERM CLEAR-SCREEN does a
screen clear, using the existing character coloring to write all spaces,
rather than doing a full reinitialization of the emulator. The text
emulator is not affected. Since ESC [ 30's; 40's m screen coloring
command sets the fore and background color palette registers (7 and 0,
resp) a screen clear manually or by receipt of ESC [ 2 J will use this
palette. A terminal reset restores the built-in default palette.
4. Add internal support of Microsoft compatible mouse for Tektronix GIN mode
crosshairs. Both the regular cursor keys and the mouse can function
together. Pressing either mouse button is the same as pressing the Enter
key. The mouse driver must be active for Kermit to use it (include the
line DEVICE=path\MOUSE.SYS in your CONFIG.SYS file for permanent
residency, or give the DOS command MOUSE ON for temporary residency of
the Microsoft mouse driver). This addition suspends any active mouse
menu programs such as DEFAULT.COM during Tektronix emulation, but they
continue to run otherwise. MS-DOS Kermit uses standard Interrupt 33h
Microsoft mouse calls.
5. Add command SET TERMINAL GRAPHICS CURSOR {ON, OFF}, default is ON. This
permits one to turn off the text cursor while in graphics (Tek) mode.
The cursor is suppressed around almost all drawing and Sixel commands.
The new text cursor symbol in Tektronix graphics mode is an 8x8 dot hollow
box so we can see where we are. The box is removed temporarily while
generating a TIFF format screen dump (default keys Control-End).
6. Add command SET TERMINAL GRAPHICS COLOR <color values> which is analogous
to the text mode command SET TERM COLOR and uses the same color values.
Two technical notes: the background color cannot be given bold
attributes, and the colors are stored in DEC VT340 color palette slots 0
(background) and 7 (foreground).
Be wary of two side effects of colored graphics screens: most Print Screen
programs will put a black dot on the printer paper if a dot is illuminated
at all, and Sixel graphics normally add (OR) to the exiting dot coloring
and hence the coloring may not be what was intended. Resetting the
emulator restores the colors specified by these SET TERMINAL commands.
7. Include additional Tek submode entry and exit commands of:
ESC 1 enter Tek submode from text emulator and clear Tek screen;
ignored if Tek mode is disabled.
ESC 2 exit Tek submode from text emulator;
ignored if acting as a full Tek terminal (SET TERM TEK).
KEYBOARD TRANSLATOR CHANGES (TERMINAL EMULATION)
1. Add a facility to the keyboard translator. Let key definition strings of
the form {\Kverb other material} activate an existing macro or keyboard
verb, or a succession of them. If "verb" matches the name of a regular
Kermit macro, execute the macro and stay on the Kermit command line; thus
a CONNECT command is needed to return to Connect mode. If the verb does
not match either a macro name or an existing keyboard verb then do nothing
and stay in Connect mode. Be aware that searching tables for the name of
the verb uses many cpu cycles and will reduce performance.
Examples:
SET KEY \316 {\{kmodeline}\{kdnarr}\{kdnarr}}
Pressing the IBM PC "F2" key (code \316) toggles the modeline and then
sends two down arrow sequences to the host. Notice the need to place
curly braces around each "kverb" phrase to separate them properly.
DEFINE Accumlate Receive, Connect
SET KEY \315 {\Kaccmulate}
Pressing the IBM PC "F1" key (code \315 above) makes the keyboard
translator see string {\Kaccumlate}, verb "accumlate" is not in the
predefined tables, and hence Kermit invokes the Macro named ACCMULATE.
That Macro puts Kermit into file receive mode and when the file, or
file group, transfer has been completed it returns to Connect mode.
DEFINE WP Take wp30.ini, Connect
SET KEY \316 {\Kwp}
This makes IBM PC key "F2" invoke macro WP which in turn reads in
and executes the contents of file WP30.INI. Kermit then returns to
Connect mode. Nothing happens if the user has not defined Macro WP.
Braces around the whole key definition are required so that the search
for the verb name is done while executing in Connect mode rather than
when defining the key. If the braces are omitted then only the predefined
keyboard verbs are available; an error is reported if the verb is not one
of these.
Text sent to the host may precede and follow the \Kverb part. To avoid
confusion "Kverb" itself, but not the "\", may be placed in braces too,
such as:
DEFINE Accumulate cd c:\junkmail,Receive,Connect
SET KEY \315 {kermit\13\send foo.bar\13\{KAccumulate}exit\13}
the pieces: |_______________________||............||_____|
string to host do Macro string to host
This sends the string "Kermit<carriage return>Send foo.bar<carriage ret>"
to the host to invoke its Kermit and asks it to send file foo.bar. It
then invokes local Macro Accumulate to receive the file, and finally it
sends the string "exit<carriage return>" to the host. Braces around
KAccumlate delimit it from the final string text.
There is no host command which can invoke these macros; this protects the
PC against stray garbage text and unauthorized commands from the host.
2. Ensure that during terminal emulation, outgoing bytes of values greater
than 9fh are not converted into 7-bit control form (ESC letter) under any
circumstance. Only bytes in the C1 control code area may be converted.
3. Add DESQview support call to release the cpu timeslice when in Connect
mode and no character is available from the serial port.
COMMUNICATIONS / SERIAL PORT CHANGES
1. SET FLOW has a new option, RTS/CTS, for controlling sending and receiving
of characters at the hardware level. It is effective only for COM1..COM4
(real UARTs); selecting SET FLOW RTS/CTS for other communications ports
is the same as SET FLOW NONE. It is effective only when SET DUPLEX is
FULL, which is the default. It works by lowering the modem status signal
RTS when we wish to stop the host from sending characters to us, and the
host can ask us to stop sending by lowering modem status signal CTS.
As in the case of XON/XOFF, Kermit prevents a deadlock of being
permanently held in the stopped state. The algorithm is to wait for as
long 10 seconds when a character needs to be sent and if Kermit is still
being held it will ignore the hold, sound a beep in the PC's speaker,
then send the character anyway.
2. SET DUPLEX HALF has been modified very slightly to send the output
character as above when blocked for too long. Previously it would beep
and discard the character. Please notice that Half Duplex operation uses
RTS and CTS differently than it is used in Full Duplex flow control. The
classical Half Duplex situation is the sender asserts RTS when it wishes
to transmit and awaits permission via CTS being asserted by the modem.
The sender unasserts RTS when it is finished sending and resumes
listening. Flow Control and Half Duplex should not be used together,
but Kermit does not prevent one from trying it.
3. The port address of serial ports COM1 through COM4 may now be given to
Kermit as overrides (or, for COM3 and COM4, to activate them). There are
two ways:
First, there are the new Kermit commands SET COMn value, such as:
SET COM3 value
"Value" is the port address, such as \x02f8 for COM3; notice the optional
use of a hexadecimal number here.
The second way is to use the DOS Environment line starting with KERMIT= to
hold the phrase "COM3 value;" or "COM4 value;" (without the "" marks).
Please double check the value to avoid systems conflicts (especially with
disk drives).
The IRQ value for COMx ports must still be 4 or 3, IRQ 4 for COM1 and COM3.
It is permissable to have two serial ports sharing the same IRQ line,
provided only one is active at a time. Kermit does testing to discover
which IRQ, 4 or 3, is used by the selected serial port.
The current list of commands recognized from the DOS Environment lines
starting with KERMIT= or KERMIT0= or KERMIT1= etc are:
COM1 value value is port address (no default)
COM2 value value is port address (no default)
COM3 value value is port address (no default)
COM4 value value is port address (no default)
ROLLBACK value value is number of screens (def 10)
INPUT-BUFFER-LENGTH value value is number of bytes (def 128)
of the script INPUT command buffer
These Environment lines are constructed with the DOS command SET, such as:
C> SET KERMIT=ROLLBACK 35;COM3 \x02f8;INPUT 256;
Upper and lower case are equivalent here.
4. Modify the retry procedure to send a packet character to wait 60ms rather
than 10ms between each of five attempts. This may help situations where
a network device may be unresponsive for about 200ms between characters.
5. Internal revisions to details of handling 75/1200 bps split speeds.
Previously, filling the receiver buffer would cause an XOFF to be sent at
1200 baud rather than at the correct 75 baud. Now the XOFF character is
sent at 75. Thanks to Dan Norstedt for providing the split-speed code.
COMMUNICATIONS / NETWORKING CHANGES
1. Incorporate support for Novell's TELAPI TCP/IP Telnet program. This
is selected by command:
SET PORT TELAPI nnn.nnn.nnn.nnn
where nnn.nnn.nnn.nnn is the Internet address of the remote host, in
decimal.
Example: SET PORT TELAPI 129.123.1.11 (machine netlab.usu.edu)
TELAPI is a component of the Novell package LAN WorkPlace for DOS. At
Utah State University it was run with the Novell (ex-Excelan) EXOS 205T
Ethernet board (a smart multiprotocol board supporting TCP and NetWare
IPX packets). Novell Utility TSU.EXE is not required but may be used
together with command SET PORT BIOS1.
SET PORT TELAPI must not be confused with SET PORT NOVELL(NASI); they
use very different communications methods.
Notes on this new faciity:
a) Hosts not on the local network will likely require their
Internet address and the local gateway to be specified with utility
ROUTE, such as:
ROUTE ADD 128.59.39.2 129.123.1.254
The first address is watsun.cc.columbia.edu, in New York City,
and the second is that of a local gateway box (a cisco Inc router
at Utah State University in Logan, Utah).
b) The communications channel is opened in 8-bit-wide BINARY
character-at-a-time mode, thus Unix hosts may require Line Feed
(Control-J) as a line terminator.
c) Included in this work is sending a BREAK signal as a Telnet
"Interrupt Process" command.
d) A status message is shown for 3 seconds if the connection cannot
be established.
e) Once an Internet number has been specified with SET PORT TELAPI it
will be retained for subsequent SET PORT TELAPI commands. Thus it
need be stated only once. SHOW COMMUNICATIONS will display the
number.
f) The presence of the host can be checked by sending the two bytes
\255\246, which is Telnet signal "Are You There?" (AYT), and to which
the host is supposed to send back a bell or visible message. This
can be arranged easily by command SET KEY <key's ident here> \255\246
if SET TRANSLATION KEYBOARD OFF is selected. MS-DOS Kermit packets
encode \255 value in other terms and thus AYT will not be invoked by
packet data. Character \255 is special in Telnet; it introduces
Options negotiation. To send \255 as data during terminal emulation
and scripts (i.e., outside MS-DOS Kermit packets) it must be sent
twice, as \255\255. See TCP/IP documents RFC-854 and RFC-855 for
Telnet specifications.
g) TELAPI version 3.5 sometimes has trouble hanging up a connection. It
will attempt creating a new one for each new session and can exhaust
its space (defaults to two of them) when an old one persists. The
only cure I know is to unload the TELAPI TSR (DOS command TELAPI -u)
or reboot the machine.
h) TELAPI uses Interrupt 14h with high numbered function calls. Beware
of using other Int 14h trapping programs simultaneously.
i) Kermit uses only the Internet number form of addressing for TELAPI
because the TCP "name resolver" (conversion of a name to a number)
is not available directly with TELAPI. Thus, full compliance with
TCP/IP specs is not available to Kermit or other external terminal
emulators using the TELAPI interface. The full specs recommend using
names and letting a separate group of machines, called Name Servers,
provide the Internet number via TCP/IP methods.
2. Add communications enhancement to using the Int 14h serial port
interceptor TES from Interconnections Inc (distributed with Novell
NetWare for VMS). The new command:
SET PORT TES <optional host name>
invokes TES and make a connection to the indicated host. This competes
with SET PORT BIOSn because they use some common operations. That is,
either SET PORT TES or SET PORT BIOSn should not be used while the other
is still active.
<optional host name> Action
host-name Connect to that host, and disconnect from a previous
TES host if such a connection were active.
* Show all available TES hosts but do not connect.
nothing Use the current TES host name to reestablish an
existing connection. Most useful when switching
between TES and a real serial port. If no host name
exists then a list of available hosts is shown.
Keyboard verb \Knethold is used to invoke the TES command interpreter
while in Connect mode (to revise connections usually), and HANGUP breaks
an existing connection. Sending a BREAK (ALT-B or \Kbreak) performs the
same function for TES as \Knethold. Use this function when manual control
of sessions is desired, such as creating multiple sessions managed by
TES rather than by Kermit.
These new TES operations couple closely with version 2.x of TES and will
not work with earlier ones. Instead use SET PORT BIOS1 and the TES hot
key with older TES's. If the TES hot key is used then \Knethold may not
be recognized; use the hot key again to control TES. If the hot key has
not been used then TES material is shown on the Connect mode screen.
SHOW COMMUNICATIONS will show the current host name, as read back from
TES itself. The apparent serial port identifier on the Connect status
line is the letter "I".
Note that placing a connection on hold and later returning to it may
require pressing the \knethold or \kbreak keys and typing RESUME to make
the TES command interpreter return control to the data stream. It's
apparently a problem in the interpreter.
If Kermit is exited completly then the active session is terminated, but
held sessions are retained. Thus, to preserve sessions after Kermit has
exited use \knethold or \kbreak to get the TES command interpreter and
place the connection on hold manually. The session may be resumed as
above.
3. Enhancements to SET PORT EBIOS for IBM LANACS.
Let the baud rate and parity be set for either BIOSn or EBIOS ports so
they will be transferred across the network to the LANACS server port.
Initially they will show as "unknown" until set by the user. In addition
to the speed 8 data bits and no parity are presumed. For EBIOS, the port
being adjusted is really that on the asynchronous server; the local PC
uses NetBios and EBIOS to simulate that remote port across the network.
Add new optional final command argument of the EBIOS server port name:
SET PORT EBIOS <local communication port, 1..4> <server port name>
such as SET PORT EBIOS 1 modem-2400
If the server port name is omitted then the port name is taken from the
EBIOS table on the client machine, such as resuming an old connection.
This option removes the necessity of using the REDIRECT.EXE program, part
of the LANACS package, because Kermit does a simple redirection of the
selected local port to the named host port (and the name is presumed to
be a unique one rather than a group name). If another type of connection
is desired then a) omit the sever port name in the SET PORT EBIOS command
and b) perform the redirection with REDIRECT.EXE. Each instance of SET
PORT EBIOS <local coms port> uses its own port information of speed,
parity, flow control, handshake, and local-echo.
End of MSR310.DOC.